home *** CD-ROM | disk | FTP | other *** search
- program Project1;
-
- {$APPTYPE CONSOLE}
-
- uses
- Windows,
- SysUtils,
- AAWidWrd in 'AAWidWrd.pas';
-
-
- var
- x : TaaWideWord;
- y : TaaWideWord;
- z : TaaWideWord;
- i : integer;
- j : integer;
- Rem : TaaWideWord;
- Start : DWORD;
- begin
- writeln('zero');
- x := TaaWideWord.Create;
- x.Print;
-
- writeln('add 1 to 0 to give 1');
- x.SetToZero;
- y := TaaWideWord.Create;
- y.Assign(1);
- x.Add(y);
- x.Print;
-
- (*
- writeln('increment a few more times');
- for i := 1 to 257 do begin
- aaWWInc(x);
- aaWWPrint(x);
- end;
- *)
-
- writeln('subtract 1 from 1 to give 0');
- x.Subtract(y);
- x.Print;
-
- writeln('subtract 12345678 from 87654321');
- x.Assign(87654321);
- write('x: ');
- x.Print;
- y.Assign(12345678);
- write('y: ');
- y.Print;
- x.Subtract(y);
- write('x-y: ');
- x.Print;
-
- writeln('multiply 12345678 by 12345678');
- x.Assign(y);
- x.Multiply(y);
- write('x*y: ');
- x.Print;
-
- writeln('multiply 87654321 by 12345678');
- x.Assign(87654321);
- write('x: ');
- x.Print;
- y.Assign(12345678);
- write('y: ');
- y.Print;
- x.Multiply(y);
- write('x*y: ');
- x.Print;
-
- writeln('divide previous result by 12345678');
- z := TaaWideWord.Create;
- x.Divide(y, z);
- x.Print;
- z.Print;
-
- writeln('divide previous result by 1234');
- y.Assign(1234);
- x.Divide(y, z);
- x.Print;
- z.Print;
-
- writeln('test');
- x.Assign(65736);
- write('x: ');
- x.Print;
- y.Assign(190);
- write('y: ');
- y.Print;
- x.Divide(y, z);
- write('x/y: ');
- x.Print;
- write('x mod y: ');
- z.Print;
- readln;
-
- writeln('test');
- x.Assign(22338);
- write('x: ');
- x.Print;
- x.Multiply(x);
- write('x*x: ');
- x.Print;
- y.Assign(48731);
- write('y: ');
- y.Print;
- x.Divide(y, z);
- write('x/y: ');
- x.Print;
- write('x mod y: ');
- z.Print;
- readln;
-
- writeln('test');
- x.Assign(6125);
- write('x: ');
- x.Print;
- x.Multiply(x);
- write('x*x: ');
- x.Print;
- y.Assign(48851);
- write('y: ');
- y.Print;
- x.Divide(y, z);
- write('x/y: ');
- x.Print;
- write('x mod y: ');
- z.Print;
- readln;
-
- (*
- writeln('testing for primes');
- x.assign(48679);
- for i := 1 to 1000 do begin
- if (x.IsPrime) then begin
- write('A prime: ', x.AsInteger);
- readln;
- end;
- x.AddOne;
- x.AddOne;
- end;
- *)
-
- {generate random prime}
- Randomize;
- x.RandomPrime(256);
- write('Prime: ');
- x.Print;
- x.SubOne;
- if x.IsDivBy3 then
- writeln('p-1 is divisible by 3')
- else
- writeln('p-1 is not divisible by 3');
-
- Randomize;
- x.RandomRSAPrime(256);
- writeln('RSA prime: ');
- x.Print;
- readln;
-
- writeln('starting timing test...');
- Start := GetTickCount;
- for i := 1 to 10 do begin
- x.RandomRSAPrime(256)TaaWideWord.;
- end;
- writeln(GetTickCount - Start);
-
-
- readln;
- readln;
-
- writeln('loop test');
- Rem := TaaWideWord.Create;
- z.Assign(987654321);
- j := 123;
- for i := 1 to 1000000 do begin
- x.Assign(z);
- y.Assign(j);
- x.Multiply(y);
- x.AddOne;
- if (i mod 1000) = 0 then
- x.print;
- x.Divide(y, Rem);
- if (x.Compare(z) <> 0) or (not Rem.isOne) then
- writeln('error');
- inc(j, 1024);
- end;
- writeln('done');
-
-
- (*
- for i := 1 to 4999 do begin
- write(i:5);
- aaWWCvtFromInt(i*7, x);
- for j := 1 to 4999 do begin
- aaWWCvtFromInt(j*11, y);
- aaWWMultiply(x, y, z, t);
- if (aaWWCvtToInt(z) <> (i*j*77)) then
- write('error');
- end;
- end;
- *)
- readln;
- end.
-
-